|
|
Desarrollo conjunto de 3ºaño C.B.-5ºaño ElectrónicaDocentes a cargo: 3ºaño- Marcelo Cañari; 5ºaño- Roberto BorraDESCRIPCION - TRANSMISOR - RECEPTOR - Prog.Asm - Prog.V.B.
Descripción:Este conjunto de dispositivos permite la transmisión de mensajes escritos, desde una PC. hasta un pequeño receptor, valiéndose para el enlace de RF., medio de vinculación utilizado, de un par de híbridos, los denominados Virtual Wire, transfiriendo directamente los datos presentes en el puerto serie asincronico con protocolo RS232 que cuentan todas las PC. hasta el receptor donde son interpretados directamente por un microcontrolador, que no cuentan con UART incorporada en su hard si no que se la implemento en soft,y los visualiza mediante un display LCD del tipo inteligente de 2 líneas por 20 caracteres emitiendo una señal sonora con cada nuevo mensaje. La interface hombre-maquina que se implemento para la PC es del tipo gráfica, realizada en Visual Basic.
El Transmisor:Esta desarrollado alrededor de un híbrido con oscilador controlado por resonador SAW, que en nuestro caso, fija su frecuencia de trabajo en 433.92Mhz.y un consumo máximo de 9mA para tensiones de 1.5V. a 12V.
Esto permite tomar alimentación del mismo puerto serie de la PC al que se conecta, posibilitando además encapsularlo dentro de las tapas de el conector DB25 junto a los componentes necesarios para completar la fuente de alimentacion formada por un diodo, un capacitor electrolitico (que sirve como tapon del orificio destinado al cable) y un pull-down en la entrada de datos, necesario porque la salida RS232 alterna entre +12V -12V bloqueado este ultimo por un diodo, para adaptarlo a la entrada del transmisor; y sirve, a la vez, de indicador luminoso de transmisión;formando un modulo robusto y compacto (ver detalle foto 1), del que solo se prolonga la antena (un conductor de 18 cm. de longitud). PARA VER EL CIRCUITO HACER CLIC AQUI Puede verse el modelo terminado y su interior
El Receptor:Este modulo consta de tres componentes claves. En primer lugar el encargado de recibir la señal de RF.; un hibrido pareja del transmisor antes referido que cuenta con dos salidas, una analogica y otra digital; la primera usada en este caso solo para monitorear mediante un osciloscopio el ajuste de la banda, lo que se logra variando la posicion del nucleo de su pequeña bobina hasta conseguir la mayor amplitud en la señal aqui presente. En segundo lugar, el corazon de este desarrollo, un microcontrolador PIC16C84 o 16F84. A este ingresa por su pin de interrupcion externa, la señal disponible en la salida digital del hibrido receptor la cual es procesada para decodificar su informacion. Por ultimo un display de LCD, los llamados inteligentes, es encargado de mostrar el mensaje.Ademas incorpora un buzer piezoelectrico, que puede, por su bajo consumo, conectarse directamente a la salida del PIC e indicar en forma sonora la recepcion de un nuevo mensaje. PARA VER EL CIRCUITO HACER CLIC AQUI
PROGRAMA EN LENGUAJE ENSAMBLADOR; CLOCK = 4 Mhz. ; BAUDIOS =1200 ; BITS =8 ; PARIDAD =N ; STOP =1 ; CICLOS POR BIT =833 PRESACLER =4 RTCC =208 ; OFFSET DE INT 16 CICLOS ; CICLOS START_BIT =1250 PRESCALER =8 RTCC =156 ; OFFSET DE INT 32 CICLOS LIST P=16C84 INCLUDE P16F84.INC ;================================================================= ; ;================================================================= REG_W EQU 0CH ;AUX PARA GUARDAR W REG_STATUS EQU 0DH ;AUX PARA GUARDAR STATUS PUNT_M EQU 0EH ;PUNTERO PARA MOSTRAR MENSAJE PUNT_R EQU 0FH ;PUNTERO PARA ALMACENAR MENSAJE LONG_MENS EQU 10H ;LONGITUD DEL MENSAJE STATUS_MENS EQU 11H ;STATUS DEL MENSAJE TIEMPO EQU 12H ;TIEMPO DE RETARDO PARA EL DISPLAY POSICION EQU 13H ;POSICION DEL CURSOR EN EL DISPLAY CONT_BIT EQU 14H ;CONTADOR DE BITS RECIBIDOS RX_REG EQU 15H ;REGISTRO DE RECEPCION RX_TEMP EQU 16H ;GUARDA TEMPORALMENTE BIT RECIBIDO CONT_BYTE EQU 17h ;CUENTA LOS BYTE RECIBIDOS PUNT_TEM EQU 18H ;GUARDA EL COMIENZO DEL PUNTERO PRINCIPIO EQU 19H ;COMIENZO DEL BUFFER FIN EQU 4FH ;ULTIMA POSICION DE MEMORIA DEL 84 _OPTION EQU 81H RTCC EQU 01H ;================================================================= ; STATUS_MENS ;================================================================= #DEFINE MOSTRANDO STATUS_MENS,0 #DEFINE RECIV_BYTE STATUS_MENS,1 #DEFINE RECIV_OTRO STATUS_MENS,2 #DEFINE MENS_RECIV STATUS_MENS,3 ;#DEFINE STATUS_MENS,4 ;#DEFINE STATUS_MENS,5 #DEFINE XON_DETEC STATUS_MENS,6 #DEFINE ERROR_FRAME STATUS_MENS,7 ;================================================================= ;================================================================= #DEFINE _C STATUS,C #DEFINE _Z STATUS,Z #DEFINE _T0IF INTCON,T0IF #DEFINE _T0IE INTCON,T0IE #DEFINE _GIE INTCON,GIE #DEFINE RS PORTA,0 ;STATUS DE DISPLAY(DATO-CONTROL) #DEFINE E PORTA,1 ;ENABLE DE DISPLAY #DEFINE RX PORTA,4 #DEFINE _RX RX_TEMP,4 #DEFINE PAG0 BCF STATUS,5 #DEFINE PAG1 BSF STATUS,5 ;================================================================= ; MACROS ;================================================================= PUSH MACRO MOVWF REG_W SWAPF STATUS,W PAG0 MOVWF REG_STATUS ENDM ;================================================================= POP MACRO SWAPF REG_STATUS,W MOVWF STATUS SWAPF REG_W SWAPF REG_W,W ENDM ;================================================================= ; VECTOR RESET ;================================================================= ORG 0H GOTO INICIO ;================================================================= ; VECTOR INTERRUPCION ;================================================================= ORG 04H BTFSS _T0IF ;INTERRUPCION DEL RTCC ? RETFIE ;NO! VOLVER Y GIE PUSH ;SI! GUARDAR REGISTROS BTFSC RECIV_BYTE ;EN PROGRESO RECEP.DE BYTE GOTO RECIV_BIT ;SI! SEGUIR RECIBIENDO GOTO START_BIT ;NO! DETECTO UN START BIT? RESTAURA_REG POP ;RECUPERAR REGISTROS BCF _T0IF RETFIE ;================================================================= ; PRINCIPAL ;================================================================= INICIO PAG1 CLRF TRISB ;PORTB COMO SALIDA MOVLW B'10000' MOVWF TRISA ;RX RA4 COMO ENTRADA PAG0 BCF _T0IF ;LIMPIAR FLAG INT. TIMER0 BSF _T0IE ;HABILITAR INT. TIMER0 BSF _GIE ;HABILITAR INT. GLOBALES CLRF STATUS_MENS ;INICIALIZA EL STATUS_MENS MOVLW PRINCIPIO ;INICIALIZA LOS PUNTEROS MOVWF PUNT_R MOVWF PUNT_M MOVWF PUNT_TEM ;================================================================= ; SET_DISPLAY ;================================================================= MOVLW 38H ;DOS LINEAS 8 BITS
CALL CONTROL
MOVLW 06H ;SIN DESPLAZAR
CALL CONTROL
MOVLW 0CH ;ACTIVA DISPLAY
CALL CONTROL
MOVLW 'H'
CALL DATO
;=================================================================
; LOOP
;=================================================================
ESPERA_MENS
CALL NUEVO_BYTE
ESPERA
BTFSS RECIV_OTRO
GOTO ANALIZA_MENS
BTFSC MENS_RECIV
CALL MUESTRA
GOTO ESPERA
ANALIZA_MENS
BTFSC ERROR_FRAME
GOTO MENS_NO_VALIDO
BTFSC XON_DETEC
GOTO GUARDAR
MOVLW .17
XORWF RX_REG,W
BTFSS _Z
GOTO ESPERA_MENS
BSF XON_DETEC
GOTO ESPERA_MENS
GUARDAR
MOVLW .13
XORWF RX_REG,W
BTFSC _Z
GOTO FIN_MENS
INCF CONT_BYTE
MOVF PUNT_R,W
MOVWF FSR
MOVF RX_REG,W
MOVWF INDF
INCF PUNT_R
MOVLW (FIN + 1)
XORWF PUNT_R,W
BTFSS _Z
GOTO ESPERA_MENS
MOVLW PRINCIPIO
MOVWF PUNT_R
GOTO ESPERA_MENS
FIN_MENS
MOVF CONT_BYTE,W
MOVWF LONG_MENS
CLRF CONT_BYTE
BSF MENS_RECIV
MOVF PUNT_R,W
MOVWF PUNT_TEM
BCF XON_DETEC
GOTO ESPERA_MENS
MENS_NO_VALIDO
MOVF PUNT_TEM,W
MOVWF PUNT_R
CLRF CONT_BYTE
BCF XON_DETEC
GOTO ESPERA_MENS
;===============================================================
NUEVO_BYTE
BSF RECIV_OTRO
MOVLW 9
MOVWF CONT_BIT ;INICIALIZA EL
CLRF RX_REG ;CONTADOR DE BITS
BCF ERROR_FRAME
PAG1
MOVLW B'00111000' ;INCREMENTA EL RTCC CON
MOVWF _OPTION ;EL START BIT
PAG0
MOVLW 0FFH ;CARGAR RTCC CON 255
MOVWF RTCC ;PARA QUE LO DISPARE EL
RETURN ;FLANCO DEL START BIT
;===============================================================
START_BIT
PAG0
BTFSC RX
GOTO FALSO_START_BIT
BSF RECIV_BYTE
PAG1
MOVLW 02H
MOVWF _OPTION
PAG0
MOVLW -.152
MOVWF RTCC
GOTO RESTAURA_REG
FALSO_START_BIT
MOVLW 0FFH
MOVWF RTCC
GOTO RESTAURA_REG
RECIV_BIT
PAG1
MOVLW 01H
MOVWF _OPTION
PAG0
MOVF PORTA,W
MOVWF RX_TEMP
MOVLW -.204
MOVWF RTCC
MOVF PORTA,W
XORWF RX_TEMP,W
ANDLW B'10000'
BTFSC _Z
GOTO TOMAR
MOVF PORTA,W
MOVWF RX_TEMP
TOMAR
DECFSZ CONT_BIT
GOTO RECIV_PROXIMO
RECIV_STOP_BIT
BTFSS _RX
BSF ERROR_FRAME
BCF RECIV_BYTE
BCF RECIV_OTRO
GOTO RESTAURA_REG
RECIV_PROXIMO
BCF _C
BTFSC _RX
BSF _C
RRF RX_REG
GOTO RESTAURA_REG
;===============================================================
; RUTINA DE DISPLAY
;===============================================================
RETARDO MOVLW 0H
MOVWF TIEMPO
DECRE DECFSZ TIEMPO
GOTO DECRE
RETURN
CONTROL BCF RS
GOTO PASO2
DATO BSF RS PASO2 BSF E
MOVWF PORTB
CALL RETARDO
BCF E
CALL RETARDO
RETURN
;=============================================================== ; MOSTRAR MENSAJE ;=============================================================== MUESTRA BTFSC MOSTRANDO
GOTO CICLO
BSF MOSTRANDO
MOVLW 01H
CALL CONTROL ;LIMPIAR DISPLAY Y HOME
CICLO
MOVF PUNT_M,W
MOVWF FSR
MOVF INDF,W
CALL DATO
INCF PUNT_M
MOVLW (FIN + 1)
XORWF PUNT_M,W
BTFSS _Z
GOTO FALTA
MOVLW PRINCIPIO
MOVWF PUNT_R
FALTA
MOVLW 10H ;SI COMPLETO LA
XORWF POSICION,W ;PRIMER LINEA
BTFSS _Z ;PASAR A LA SEGUNDA
GOTO FINAL ;FIN DE MENSAJE ?
MOVLW 0C0H ;DDRAM 1ºCARACTER 2ºLINEA
CALL CONTROL
FINAL
INCF POSICION
DECFSZ LONG_MENS ;FIN DE MENSAJE ?
RETURN ;NO
BCF MOSTRANDO ;SI
BCF MENS_RECIV
RETURN
;=================================================================
;=================================================================
END
Podes bajar aqui el ejecutable Pager.exe, es una version para 32 bits (WINDOWS 95 o 98); el cual se detalla a continuacion
|
|
No dudes en comunicarte ante cualquier duda o
inquietud Ultima actualizacion de este sitio 25/04/99 |